import type { PayParams, UploadImage, UserData } from '@/types/user'
import { request } from '@/utils/http'

//login登录register注册changeMobile更换手机号forgetPassword找回密码,bindMobile绑定三方登录，区分验证码
// 1. 获取短信验证码
export type CodeType = 'login' | 'register' | 'changeMobile' | 'forgetPassword' | 'bindMobile'

export interface GetCodeParams {
  mobile: string
  type: CodeType
}

export type GetCodeData = {
  code: string
}

/**
 * 发送验证码
 */
export const getCodeApi = (params: GetCodeParams) => {
  // get 方法的参数需要通过 params 来传递
  return request.get<null, GetCodeData>('/code', { params })
}

// 2. 手机号验证码登录
export interface LoginCodeParams {
  /**
   * 验证码
   */
  code: string
  /**
   * 手机号
   */
  mobile: string
}
export interface LoginCodeData {
  /**
   * 用户名
   */
  account?: string
  /**
   * 头像
   */
  avatar?: string
  /**
   * 用户id
   */
  id: string
  /**
   * 脱敏手机号，带星号的手机号
   */
  mobile?: string
  /**
   * refreshToken
   */
  refreshToken: string
  /**
   * token
   */
  token: string
}

/**
 * 用户登录接口（短信验证码方式）
 */
export const loginByMobileApi = (data: LoginCodeParams) => {
  return request.post<null, LoginCodeData>('/login', data)
}
// 获取用户信息
export const userInfoApi = () => {
  return request.get<null, UserData>('/patient/myUser')
}
export interface LoginParams {
  /**
   * 账号-手机号
   */
  mobile: string
  /**
   * 密码
   */
  password: string
}

// 用户登录 账号-手机号 密码
export const loginByAccountApi = (data: LoginParams) => {
  return request.post<null, LoginCodeData>('/login/password', data)
}
// 上传图片
export const uploadImageApi = (filePath: string) => {
  // return request.post('/upload')
  return request.upload<null, UploadImage>('/upload', {
    name: 'file', // 服务器的 key
    filePath: filePath, // 上传文件资源的路径(沙箱路径)，上传时会自动转换成二进制
  })
}
/**
 * 三方支付（暂时只支持支付宝支付）
 */
export const orderPayApi = (data: PayParams) => {
  return request.post<null, { payUrl: string }>('/patient/consult/pay', data)
}
